package com.jkoss.pojo.loan;

import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

public class SubsidyExample {
    protected String orderByClause;

    protected boolean distinct;

    protected List<Criteria> oredCriteria;

    public SubsidyExample() {
        oredCriteria = new ArrayList<Criteria>();
    }

    public void setOrderByClause(String orderByClause) {
        this.orderByClause = orderByClause;
    }

    public String getOrderByClause() {
        return orderByClause;
    }

    public void setDistinct(boolean distinct) {
        this.distinct = distinct;
    }

    public boolean isDistinct() {
        return distinct;
    }

    public List<Criteria> getOredCriteria() {
        return oredCriteria;
    }

    public void or(Criteria criteria) {
        oredCriteria.add(criteria);
    }

    public Criteria or() {
        Criteria criteria = createCriteriaInternal();
        oredCriteria.add(criteria);
        return criteria;
    }

    public Criteria createCriteria() {
        Criteria criteria = createCriteriaInternal();
        if (oredCriteria.size() == 0) {
            oredCriteria.add(criteria);
        }
        return criteria;
    }

    protected Criteria createCriteriaInternal() {
        Criteria criteria = new Criteria();
        return criteria;
    }

    public void clear() {
        oredCriteria.clear();
        orderByClause = null;
        distinct = false;
    }

    protected abstract static class GeneratedCriteria {
        protected List<Criterion> criteria;

        protected GeneratedCriteria() {
            super();
            criteria = new ArrayList<Criterion>();
        }

        public boolean isValid() {
            return criteria.size() > 0;
        }

        public List<Criterion> getAllCriteria() {
            return criteria;
        }

        public List<Criterion> getCriteria() {
            return criteria;
        }

        protected void addCriterion(String condition) {
            if (condition == null) {
                throw new RuntimeException("Value for condition cannot be null");
            }
            criteria.add(new Criterion(condition));
        }

        protected void addCriterion(String condition, Object value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value));
        }

        protected void addCriterion(String condition, Object value1, Object value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value1, value2));
        }

        protected void addCriterionForJDBCDate(String condition, Date value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            addCriterion(condition, new java.sql.Date(value.getTime()), property);
        }

        protected void addCriterionForJDBCDate(String condition, List<Date> values, String property) {
            if (values == null || values.size() == 0) {
                throw new RuntimeException("Value list for " + property + " cannot be null or empty");
            }
            List<java.sql.Date> dateList = new ArrayList<java.sql.Date>();
            Iterator<Date> iter = values.iterator();
            while (iter.hasNext()) {
                dateList.add(new java.sql.Date(iter.next().getTime()));
            }
            addCriterion(condition, dateList, property);
        }

        protected void addCriterionForJDBCDate(String condition, Date value1, Date value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            addCriterion(condition, new java.sql.Date(value1.getTime()), new java.sql.Date(value2.getTime()), property);
        }

        public Criteria andSidyIDIsNull() {
            addCriterion("sidyID is null");
            return (Criteria) this;
        }

        public Criteria andSidyIDIsNotNull() {
            addCriterion("sidyID is not null");
            return (Criteria) this;
        }

        public Criteria andSidyIDEqualTo(Integer value) {
            addCriterion("sidyID =", value, "sidyID");
            return (Criteria) this;
        }

        public Criteria andSidyIDNotEqualTo(Integer value) {
            addCriterion("sidyID <>", value, "sidyID");
            return (Criteria) this;
        }

        public Criteria andSidyIDGreaterThan(Integer value) {
            addCriterion("sidyID >", value, "sidyID");
            return (Criteria) this;
        }

        public Criteria andSidyIDGreaterThanOrEqualTo(Integer value) {
            addCriterion("sidyID >=", value, "sidyID");
            return (Criteria) this;
        }

        public Criteria andSidyIDLessThan(Integer value) {
            addCriterion("sidyID <", value, "sidyID");
            return (Criteria) this;
        }

        public Criteria andSidyIDLessThanOrEqualTo(Integer value) {
            addCriterion("sidyID <=", value, "sidyID");
            return (Criteria) this;
        }

        public Criteria andSidyIDIn(List<Integer> values) {
            addCriterion("sidyID in", values, "sidyID");
            return (Criteria) this;
        }

        public Criteria andSidyIDNotIn(List<Integer> values) {
            addCriterion("sidyID not in", values, "sidyID");
            return (Criteria) this;
        }

        public Criteria andSidyIDBetween(Integer value1, Integer value2) {
            addCriterion("sidyID between", value1, value2, "sidyID");
            return (Criteria) this;
        }

        public Criteria andSidyIDNotBetween(Integer value1, Integer value2) {
            addCriterion("sidyID not between", value1, value2, "sidyID");
            return (Criteria) this;
        }

        public Criteria andPayIDIsNull() {
            addCriterion("payID is null");
            return (Criteria) this;
        }

        public Criteria andPayIDIsNotNull() {
            addCriterion("payID is not null");
            return (Criteria) this;
        }

        public Criteria andPayIDEqualTo(Integer value) {
            addCriterion("payID =", value, "payID");
            return (Criteria) this;
        }

        public Criteria andPayIDNotEqualTo(Integer value) {
            addCriterion("payID <>", value, "payID");
            return (Criteria) this;
        }

        public Criteria andPayIDGreaterThan(Integer value) {
            addCriterion("payID >", value, "payID");
            return (Criteria) this;
        }

        public Criteria andPayIDGreaterThanOrEqualTo(Integer value) {
            addCriterion("payID >=", value, "payID");
            return (Criteria) this;
        }

        public Criteria andPayIDLessThan(Integer value) {
            addCriterion("payID <", value, "payID");
            return (Criteria) this;
        }

        public Criteria andPayIDLessThanOrEqualTo(Integer value) {
            addCriterion("payID <=", value, "payID");
            return (Criteria) this;
        }

        public Criteria andPayIDIn(List<Integer> values) {
            addCriterion("payID in", values, "payID");
            return (Criteria) this;
        }

        public Criteria andPayIDNotIn(List<Integer> values) {
            addCriterion("payID not in", values, "payID");
            return (Criteria) this;
        }

        public Criteria andPayIDBetween(Integer value1, Integer value2) {
            addCriterion("payID between", value1, value2, "payID");
            return (Criteria) this;
        }

        public Criteria andPayIDNotBetween(Integer value1, Integer value2) {
            addCriterion("payID not between", value1, value2, "payID");
            return (Criteria) this;
        }

        public Criteria andSidyDateIsNull() {
            addCriterion("sidyDate is null");
            return (Criteria) this;
        }

        public Criteria andSidyDateIsNotNull() {
            addCriterion("sidyDate is not null");
            return (Criteria) this;
        }

        public Criteria andSidyDateEqualTo(Date value) {
            addCriterion("sidyDate =", value, "sidyDate");
            return (Criteria) this;
        }

        public Criteria andSidyDateNotEqualTo(Date value) {
            addCriterion("sidyDate <>", value, "sidyDate");
            return (Criteria) this;
        }

        public Criteria andSidyDateGreaterThan(Date value) {
            addCriterion("sidyDate >", value, "sidyDate");
            return (Criteria) this;
        }

        public Criteria andSidyDateGreaterThanOrEqualTo(Date value) {
            addCriterion("sidyDate >=", value, "sidyDate");
            return (Criteria) this;
        }

        public Criteria andSidyDateLessThan(Date value) {
            addCriterion("sidyDate <", value, "sidyDate");
            return (Criteria) this;
        }

        public Criteria andSidyDateLessThanOrEqualTo(Date value) {
            addCriterion("sidyDate <=", value, "sidyDate");
            return (Criteria) this;
        }

        public Criteria andSidyDateIn(List<Date> values) {
            addCriterion("sidyDate in", values, "sidyDate");
            return (Criteria) this;
        }

        public Criteria andSidyDateNotIn(List<Date> values) {
            addCriterion("sidyDate not in", values, "sidyDate");
            return (Criteria) this;
        }

        public Criteria andSidyDateBetween(Date value1, Date value2) {
            addCriterion("sidyDate between", value1, value2, "sidyDate");
            return (Criteria) this;
        }

        public Criteria andSidyDateNotBetween(Date value1, Date value2) {
            addCriterion("sidyDate not between", value1, value2, "sidyDate");
            return (Criteria) this;
        }

        public Criteria andSidyCountIsNull() {
            addCriterion("sidyCount is null");
            return (Criteria) this;
        }

        public Criteria andSidyCountIsNotNull() {
            addCriterion("sidyCount is not null");
            return (Criteria) this;
        }

        public Criteria andSidyCountEqualTo(Integer value) {
            addCriterion("sidyCount =", value, "sidyCount");
            return (Criteria) this;
        }

        public Criteria andSidyCountNotEqualTo(Integer value) {
            addCriterion("sidyCount <>", value, "sidyCount");
            return (Criteria) this;
        }

        public Criteria andSidyCountGreaterThan(Integer value) {
            addCriterion("sidyCount >", value, "sidyCount");
            return (Criteria) this;
        }

        public Criteria andSidyCountGreaterThanOrEqualTo(Integer value) {
            addCriterion("sidyCount >=", value, "sidyCount");
            return (Criteria) this;
        }

        public Criteria andSidyCountLessThan(Integer value) {
            addCriterion("sidyCount <", value, "sidyCount");
            return (Criteria) this;
        }

        public Criteria andSidyCountLessThanOrEqualTo(Integer value) {
            addCriterion("sidyCount <=", value, "sidyCount");
            return (Criteria) this;
        }

        public Criteria andSidyCountIn(List<Integer> values) {
            addCriterion("sidyCount in", values, "sidyCount");
            return (Criteria) this;
        }

        public Criteria andSidyCountNotIn(List<Integer> values) {
            addCriterion("sidyCount not in", values, "sidyCount");
            return (Criteria) this;
        }

        public Criteria andSidyCountBetween(Integer value1, Integer value2) {
            addCriterion("sidyCount between", value1, value2, "sidyCount");
            return (Criteria) this;
        }

        public Criteria andSidyCountNotBetween(Integer value1, Integer value2) {
            addCriterion("sidyCount not between", value1, value2, "sidyCount");
            return (Criteria) this;
        }

        public Criteria andSidyshouldDateIsNull() {
            addCriterion("sidyshouldDate is null");
            return (Criteria) this;
        }

        public Criteria andSidyshouldDateIsNotNull() {
            addCriterion("sidyshouldDate is not null");
            return (Criteria) this;
        }

        public Criteria andSidyshouldDateEqualTo(Date value) {
            addCriterionForJDBCDate("sidyshouldDate =", value, "sidyshouldDate");
            return (Criteria) this;
        }

        public Criteria andSidyshouldDateNotEqualTo(Date value) {
            addCriterionForJDBCDate("sidyshouldDate <>", value, "sidyshouldDate");
            return (Criteria) this;
        }

        public Criteria andSidyshouldDateGreaterThan(Date value) {
            addCriterionForJDBCDate("sidyshouldDate >", value, "sidyshouldDate");
            return (Criteria) this;
        }

        public Criteria andSidyshouldDateGreaterThanOrEqualTo(Date value) {
            addCriterionForJDBCDate("sidyshouldDate >=", value, "sidyshouldDate");
            return (Criteria) this;
        }

        public Criteria andSidyshouldDateLessThan(Date value) {
            addCriterionForJDBCDate("sidyshouldDate <", value, "sidyshouldDate");
            return (Criteria) this;
        }

        public Criteria andSidyshouldDateLessThanOrEqualTo(Date value) {
            addCriterionForJDBCDate("sidyshouldDate <=", value, "sidyshouldDate");
            return (Criteria) this;
        }

        public Criteria andSidyshouldDateIn(List<Date> values) {
            addCriterionForJDBCDate("sidyshouldDate in", values, "sidyshouldDate");
            return (Criteria) this;
        }

        public Criteria andSidyshouldDateNotIn(List<Date> values) {
            addCriterionForJDBCDate("sidyshouldDate not in", values, "sidyshouldDate");
            return (Criteria) this;
        }

        public Criteria andSidyshouldDateBetween(Date value1, Date value2) {
            addCriterionForJDBCDate("sidyshouldDate between", value1, value2, "sidyshouldDate");
            return (Criteria) this;
        }

        public Criteria andSidyshouldDateNotBetween(Date value1, Date value2) {
            addCriterionForJDBCDate("sidyshouldDate not between", value1, value2, "sidyshouldDate");
            return (Criteria) this;
        }

        public Criteria andSidyStateIsNull() {
            addCriterion("sidyState is null");
            return (Criteria) this;
        }

        public Criteria andSidyStateIsNotNull() {
            addCriterion("sidyState is not null");
            return (Criteria) this;
        }

        public Criteria andSidyStateEqualTo(Integer value) {
            addCriterion("sidyState =", value, "sidyState");
            return (Criteria) this;
        }

        public Criteria andSidyStateNotEqualTo(Integer value) {
            addCriterion("sidyState <>", value, "sidyState");
            return (Criteria) this;
        }

        public Criteria andSidyStateGreaterThan(Integer value) {
            addCriterion("sidyState >", value, "sidyState");
            return (Criteria) this;
        }

        public Criteria andSidyStateGreaterThanOrEqualTo(Integer value) {
            addCriterion("sidyState >=", value, "sidyState");
            return (Criteria) this;
        }

        public Criteria andSidyStateLessThan(Integer value) {
            addCriterion("sidyState <", value, "sidyState");
            return (Criteria) this;
        }

        public Criteria andSidyStateLessThanOrEqualTo(Integer value) {
            addCriterion("sidyState <=", value, "sidyState");
            return (Criteria) this;
        }

        public Criteria andSidyStateIn(List<Integer> values) {
            addCriterion("sidyState in", values, "sidyState");
            return (Criteria) this;
        }

        public Criteria andSidyStateNotIn(List<Integer> values) {
            addCriterion("sidyState not in", values, "sidyState");
            return (Criteria) this;
        }

        public Criteria andSidyStateBetween(Integer value1, Integer value2) {
            addCriterion("sidyState between", value1, value2, "sidyState");
            return (Criteria) this;
        }

        public Criteria andSidyStateNotBetween(Integer value1, Integer value2) {
            addCriterion("sidyState not between", value1, value2, "sidyState");
            return (Criteria) this;
        }

        public Criteria andSidyDescbIsNull() {
            addCriterion("sidyDescb is null");
            return (Criteria) this;
        }

        public Criteria andSidyDescbIsNotNull() {
            addCriterion("sidyDescb is not null");
            return (Criteria) this;
        }

        public Criteria andSidyDescbEqualTo(String value) {
            addCriterion("sidyDescb =", value, "sidyDescb");
            return (Criteria) this;
        }

        public Criteria andSidyDescbNotEqualTo(String value) {
            addCriterion("sidyDescb <>", value, "sidyDescb");
            return (Criteria) this;
        }

        public Criteria andSidyDescbGreaterThan(String value) {
            addCriterion("sidyDescb >", value, "sidyDescb");
            return (Criteria) this;
        }

        public Criteria andSidyDescbGreaterThanOrEqualTo(String value) {
            addCriterion("sidyDescb >=", value, "sidyDescb");
            return (Criteria) this;
        }

        public Criteria andSidyDescbLessThan(String value) {
            addCriterion("sidyDescb <", value, "sidyDescb");
            return (Criteria) this;
        }

        public Criteria andSidyDescbLessThanOrEqualTo(String value) {
            addCriterion("sidyDescb <=", value, "sidyDescb");
            return (Criteria) this;
        }

        public Criteria andSidyDescbLike(String value) {
            addCriterion("sidyDescb like", value, "sidyDescb");
            return (Criteria) this;
        }

        public Criteria andSidyDescbNotLike(String value) {
            addCriterion("sidyDescb not like", value, "sidyDescb");
            return (Criteria) this;
        }

        public Criteria andSidyDescbIn(List<String> values) {
            addCriterion("sidyDescb in", values, "sidyDescb");
            return (Criteria) this;
        }

        public Criteria andSidyDescbNotIn(List<String> values) {
            addCriterion("sidyDescb not in", values, "sidyDescb");
            return (Criteria) this;
        }

        public Criteria andSidyDescbBetween(String value1, String value2) {
            addCriterion("sidyDescb between", value1, value2, "sidyDescb");
            return (Criteria) this;
        }

        public Criteria andSidyDescbNotBetween(String value1, String value2) {
            addCriterion("sidyDescb not between", value1, value2, "sidyDescb");
            return (Criteria) this;
        }

        public Criteria andSidycfmDateIsNull() {
            addCriterion("sidycfmDate is null");
            return (Criteria) this;
        }

        public Criteria andSidycfmDateIsNotNull() {
            addCriterion("sidycfmDate is not null");
            return (Criteria) this;
        }

        public Criteria andSidycfmDateEqualTo(Date value) {
            addCriterion("sidycfmDate =", value, "sidycfmDate");
            return (Criteria) this;
        }

        public Criteria andSidycfmDateNotEqualTo(Date value) {
            addCriterion("sidycfmDate <>", value, "sidycfmDate");
            return (Criteria) this;
        }

        public Criteria andSidycfmDateGreaterThan(Date value) {
            addCriterion("sidycfmDate >", value, "sidycfmDate");
            return (Criteria) this;
        }

        public Criteria andSidycfmDateGreaterThanOrEqualTo(Date value) {
            addCriterion("sidycfmDate >=", value, "sidycfmDate");
            return (Criteria) this;
        }

        public Criteria andSidycfmDateLessThan(Date value) {
            addCriterion("sidycfmDate <", value, "sidycfmDate");
            return (Criteria) this;
        }

        public Criteria andSidycfmDateLessThanOrEqualTo(Date value) {
            addCriterion("sidycfmDate <=", value, "sidycfmDate");
            return (Criteria) this;
        }

        public Criteria andSidycfmDateIn(List<Date> values) {
            addCriterion("sidycfmDate in", values, "sidycfmDate");
            return (Criteria) this;
        }

        public Criteria andSidycfmDateNotIn(List<Date> values) {
            addCriterion("sidycfmDate not in", values, "sidycfmDate");
            return (Criteria) this;
        }

        public Criteria andSidycfmDateBetween(Date value1, Date value2) {
            addCriterion("sidycfmDate between", value1, value2, "sidycfmDate");
            return (Criteria) this;
        }

        public Criteria andSidycfmDateNotBetween(Date value1, Date value2) {
            addCriterion("sidycfmDate not between", value1, value2, "sidycfmDate");
            return (Criteria) this;
        }
    }

    public static class Criteria extends GeneratedCriteria {

        protected Criteria() {
            super();
        }
    }

    public static class Criterion {
        private String condition;

        private Object value;

        private Object secondValue;

        private boolean noValue;

        private boolean singleValue;

        private boolean betweenValue;

        private boolean listValue;

        private String typeHandler;

        public String getCondition() {
            return condition;
        }

        public Object getValue() {
            return value;
        }

        public Object getSecondValue() {
            return secondValue;
        }

        public boolean isNoValue() {
            return noValue;
        }

        public boolean isSingleValue() {
            return singleValue;
        }

        public boolean isBetweenValue() {
            return betweenValue;
        }

        public boolean isListValue() {
            return listValue;
        }

        public String getTypeHandler() {
            return typeHandler;
        }

        protected Criterion(String condition) {
            super();
            this.condition = condition;
            this.typeHandler = null;
            this.noValue = true;
        }

        protected Criterion(String condition, Object value, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.typeHandler = typeHandler;
            if (value instanceof List<?>) {
                this.listValue = true;
            } else {
                this.singleValue = true;
            }
        }

        protected Criterion(String condition, Object value) {
            this(condition, value, null);
        }

        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.secondValue = secondValue;
            this.typeHandler = typeHandler;
            this.betweenValue = true;
        }

        protected Criterion(String condition, Object value, Object secondValue) {
            this(condition, value, secondValue, null);
        }
    }
}